package cl.portal.escolares.action;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import cl.portal.escolares.DAO.DAOAlumno;
import cl.portal.escolares.DAO.DAOFurgon;
import cl.portal.escolares.DAO.DAOUsuario;
import cl.portal.escolares.domain.Furgon;
import cl.portal.escolares.domain.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static Log _log = LogFactory.getLog(LoginAction.class);

	private String email;
	private String pass;
	private Usuario usuario;
	private Furgon furgon;
	private List<Furgon> furgones;

	private HashMap<Long, Long> cuposMap;

	public String execute() throws Exception {
		try {
			cuposMap = new HashMap<Long, Long>();

			HttpServletRequest request = ServletActionContext.getRequest();
			Long usuarioId = request.getParameter("usuarioId") != null ? Long
					.valueOf(request.getParameter("usuarioId")) : 0L;
			if (usuarioId != null && usuarioId > 0)
				setUsuario(DAOUsuario.get(usuarioId));// viene desde el menu de
														// navegacion
			else
				usuario = DAOUsuario.login(email, pass);// viene desde login
														// form

			if (usuario != null) {
				setFurgon(new Furgon());
				setFurgones(DAOFurgon.list(usuario.getUsuarioId(), null, true));
				for (Furgon f : furgones) {
					Integer cantidad = DAOAlumno
							.list(null, null, f.getFurgonId(), null, null,
									null, null, null, true).size();
					cuposMap.put(f.getFurgonId(),
							(f.getCapacidad() - cantidad.longValue()));
				}
				return "success";
			} else {
				addActionError(getText("error.login"));
				return "error";
			}
		} catch (Exception e) {
			_log.error(e);
			addActionError(getText("error.login"));
			return "error";
		}
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Furgon> getFurgones() {
		return furgones;
	}

	public void setFurgones(List<Furgon> furgones) {
		this.furgones = furgones;
	}

	public Furgon getFurgon() {
		return furgon;
	}

	public void setFurgon(Furgon furgon) {
		this.furgon = furgon;
	}

	public HashMap<Long, Long> getCuposMap() {
		return cuposMap;
	}

	public void setCuposMap(HashMap<Long, Long> cuposMap) {
		this.cuposMap = cuposMap;
	}

}
